package org.dromara.device.domain.vo;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import org.dromara.device.domain.DeviceConfig;

import java.io.Serial;
import java.io.Serializable;



/**
 * 设备管理-设备配置信息视图对象 device_config
 *
 * @author samuel
 * @date 2024-03-21
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = DeviceConfig.class)
public class DeviceConfigVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 设备id
     */
    @ExcelProperty(value = "设备id")
    private Long deviceId;

    private String tenantId;

    /**
     * 设备唯一序列号（超管配置，设备新增时检索有没有用户输入的sn设备，有的话配置store_id字段）
     */
    @ExcelProperty(value = "设备唯一序列号", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "超=管配置，设备新增时检索有没有用户输入的sn设备，有的话配置store_id字段")
    private String deviceSn;

    /**
     * 密钥id（超管配置）
     */
    @ExcelProperty(value = "密钥id", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "超=管配置")
    private String appId;

    /**
     * 密钥key（超管配置）
     */
    @ExcelProperty(value = "密钥key", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "超=管配置")
    private String appSecret;

    /**
     * 公钥（超管配置）
     */
    @ExcelProperty(value = "公钥", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "超=管配置")
    private String publicKey;

    /**
     * 私钥（超管配置）
     */
    @ExcelProperty(value = "私钥", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "超=管配置")
    private String privateKey;

    /**
     * 客户端类型（超管配置）
     */
    @ExcelProperty(value = "客户端类型", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "超=管配置")
    private String clientType;

    /**
     * 接口版本（字典表：1：1.0，2：2.0）
     */
    @ExcelProperty(value = "接口版本", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "字=典表：1：1.0，2：2.0")
    private String apiVersion;

    /**
     * 接口版本号
     */
    private String version;

    /**
     * 企业主号码
     */
    @ExcelProperty(value = "企业主号码")
    private String phone;

    /**
     * 设备名称（用户输入）
     */
    @ExcelProperty(value = "设备名称", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "用=户输入")
    private String name;

    /**
     * 告警信息回调地址
     */
    @ExcelProperty(value = "告警信息回调地址")
    private String callBackUrl;

    /**
     * 设备型号（超管配置）
     */
    @ExcelProperty(value = "设备型号", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "超=管配置")
    private String type;

    /**
     * 固件版本（超管配置）
     */
    @ExcelProperty(value = "固件版本", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "超=管配置")
    private String softVersion;

    /**
     * 内网ip（超管配置）
     */
    @ExcelProperty(value = "内网ip", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "超=管配置")
    private String ip;

    /**
     * 端口（超管配置）
     */
    @ExcelProperty(value = "端口", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "超=管配置")
    private Long port;

    /**
     * 外网ip（超管配置）
     */
    @ExcelProperty(value = "外网ip", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "超=管配置")
    private String publicIp;

    /**
     * 外网端口（超管配置）
     */
    @ExcelProperty(value = "外网端口", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "超=管配置")
    private Long publicPort;

    /**
     * 外网url（超管配置）
     */
    @ExcelProperty(value = "外网url", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "超=管配置")
    private String url;

    /**
     * 回看host地址（超管配置）
     */
    @ExcelProperty(value = "回看host地址", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "超=管配置")
    private String replayHost;

    /**
     * 回看prot端口（超管配置）
     */
    @ExcelProperty(value = "回看prot端口", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "超=管配置")
    private Long replayPort;

    /**
     * 外网url loginkey（超管配置）
     */
    @ExcelProperty(value = "外网url loginkey", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "超=管配置")
    private String loginKey;

    /**
     * 设备型号（超管配置）
     */
    @ExcelProperty(value = "设备型号", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "超=管配置")
    private String model;

    /**
     * 是否可见（用户配置：0 可见 1 不可见）
     */
    @ExcelProperty(value = "是否可见", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "用=户配置：0,可=见,1=,不=可见")
    private String display;

    /**
     * 是否可云控（用户配置：0 可控 1 不可控）
     */
    @ExcelProperty(value = "是否可云控", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "用=户配置：0,可=控,1=,不=可控")
    private String control;

    /**
     * 绑定时间戳（绑定门店时自动生成）
     */
    @ExcelProperty(value = "绑定时间戳", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "绑=定门店时自动生成")
    private Long bingTime;

    /**
     * 设备类型(用户配置，字典表：视频设备 NOT_FLOW，进店客流设备 INDOOR，过店客流设备 OUTDOOR，存储设备 STORAGE，关注度设备 ATTENTION_EQT，进过店设备 IN_AND_OUT)
     */
    @ExcelProperty(value = "设备类型(用户配置，字典表：视频设备 NOT_FLOW，进店客流设备 INDOOR，过店客流设备 OUTDOOR，存储设备 STORAGE，关注度设备 ATTENTION_EQT，进过店设备 IN_AND_OUT)")
    private String deviceArea;

    /**
     * 设备能力id（设备能力表device_capability_id）
     */
    @ExcelProperty(value = "设备能力id", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "设=备能力表device_capability_id")
    private Long deviceCapabilityId;

    /**
     * 制造商编码（超管配置）
     */
    @ExcelProperty(value = "制造商编码", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "超=管配置")
    private String manufacturerCode;

    /**
     * 热点背景图片（超管配置）
     */
    @ExcelProperty(value = "热点背景图片", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "超=管配置")
    private String hotspotBgImg;

    /**
     * 位置（超管配置）
     */
    @ExcelProperty(value = "位置", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "超=管配置")
    private String position;

    /**
     * 媒体来源（超管配置）
     */
    @ExcelProperty(value = "媒体来源", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "超=管配置")
    private String mediaSource;

    /**
     * 直播流地址（超管配置）
     */
    @ExcelProperty(value = "直播流地址", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "超=管配置")
    private String playUrl;

    /**
     * 进出方向（超管配置）
     */
    @ExcelProperty(value = "进出方向", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "超=管配置")
    private String inOutDirection;

    /**
     * 扩展设备信息（超管配置）
     */
    @ExcelProperty(value = "扩展设备信息", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "超=管配置")
    private String extendDeviceRel;

    /**
     * 门店id（用户配置，设备配置时必选项，删除设备是清空该字段）
     */
    @ExcelProperty(value = "门店id", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "用=户配置，设备配置时必选项，删除设备是清空该字段")
    private Long storeId;
    private String storeName;

    /**
     * 参数拼接字符串（超管配置）
     */
    @ExcelProperty(value = "参数拼接字符串", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "超=管配置")
    private String args;

    /**
     * 当前状态(0在线 1离线)
     */
    @ExcelProperty(value = "当前状态(0在线 1离线)")
    private String status;

    /**
     * 上次在线时间
     */
    @ExcelProperty(value = "上次在线时间")
    private Long lastOnlineTime;


}
